Web.Config File Based Configuration Example IdentityConfig

Modified on Monday, 23 March 2015 10:28 AM by Administrator — Categorized as: Uncategorized

        /// <summary>
        /// web.config based application_start
        /// </summary>
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            ConfigurationBasedIdentityConfig.ConfigureIdentity();
        }

  public class ConfigurationBasedIdentityConfig
    {
        
        public static string AudienceUri { get; set; }
        public static string Realm { get; private set; }

        public static void ConfigureIdentity()
        {
            Realm = ConfigurationManager.AppSettings["ida:Realm"];
            AudienceUri = ConfigurationManager.AppSettings["ida:AudienceUri"];
            
            AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;

            //tells the sts via querystring what login modes to accept
            FederatedAuthentication
                .FederationConfiguration
                .WsFederationConfiguration
                .SignInQueryString = string.Format("authModes={0}", ConfigurationManager.AppSettings.Get("authModes"));

            //Prepare a/r claims 
            MyActionResourceClaimAuthorizationManager claimsAuthManager =
                FederatedAuthentication
                .FederationConfiguration
                .IdentityConfiguration.ClaimsAuthorizationManager as MyActionResourceClaimAuthorizationManager;
            if (claimsAuthManager == null)
                throw new ConfigurationErrorsException("Missing Configuration entry for MyActionResourceClaimAuthorizationManager");

            claimsAuthManager.LoadActionResourceClaims();
            if (!String.IsNullOrEmpty(AudienceUri))
            {
                UpdateAudience();
            }
            if (!String.IsNullOrEmpty(Realm))
            {
                UpdateRealm();
            }
        }


        /// <summary>
        /// 
        /// </summary>
        private static void UpdateAudience()
        {
            int count = FederatedAuthentication.FederationConfiguration.IdentityConfiguration
                .AudienceRestriction.AllowedAudienceUris.Count(
                    uri => String.Equals(uri.OriginalString, AudienceUri, StringComparison.OrdinalIgnoreCase));
            if (count == 0)
            {
                FederatedAuthentication.FederationConfiguration.IdentityConfiguration
                    .AudienceRestriction.AllowedAudienceUris.Add(new Uri(ConfigurationBasedIdentityConfig.AudienceUri));
            }
        }

        /// <summary>
        /// 
        /// </summary>
        private static void UpdateRealm()
        {
            FederatedAuthentication.WSFederationAuthenticationModule.Realm = Realm;
        }

    }
}